import Rounding from './rounding.js'
import shapeGeom from './shape-geom.js'
import Geom from './geom.js'
import CustomProjections from './custom-projections.js'
import {AlbersUSA} from './custom-projections.js'
import Matrix2D from './matrix2d.js'
import MixedProjection from './mixed-projrction.js'
import Projections from './projections.js'
import units from './units.js'
import boundsSearch from './bounds-search.js'
import pixelTransform from './pixel-transform.js'

export {
  MixedProjection,
  Matrix2D,
  AlbersUSA,
}
export default {
  setCoordinatePrecision: Rounding.setCoordinatePrecision,
  getRoundingFunction: Rounding.getRoundingFunction,
  getPlanarPathArea2: shapeGeom.getPlanarPathArea2,
  getPlanarPathArea: shapeGeom.getPlanarPathArea,
  getPathBounds: shapeGeom.getPathBounds,

  pointSegDistSq: Geom.pointSegDistSq,
  pointSegDistSq3D: Geom.pointSegDistSq3D,
  calcArcBounds: Geom.calcArcBounds,
  containsBounds: Geom.containsBounds,

  parseCustomProjection: CustomProjections.parseCustomProjection,
  crsToPrj: Projections.crsToPrj,
  getCRS: Projections.getCRS,
  getDatasetCRS: Projections.getDatasetCRS,
  isLatLngCRS: Projections.isLatLngCRS,
  convertIntervalParam: units.convertIntervalParam,

  getBoundsSearchFunction: boundsSearch.getBoundsSearchFunction,

  transformDatasetToPixels: pixelTransform.transformDatasetToPixels,
}